Software development and testing scenarios are among the largest consumers of copies of production data. In a typical software development and test setup, an appliance (e.g., a data storage system) takes a snapshot of data files and exports snapshots through a file system. Copy data management (CDM) techniques and systems can be employed to handle these sorts of workloads. In these scenarios, application virtual machines (i.e., virtual machines running applications) mount the file system. Each of the multiple virtual machines in the software development and test setup has its own set of data files, but there is generally a lot of data in common across the data files. Developers try out code changes on a dataset, and different tests are executed on the same dataset simultaneously in different virtual machines. The applications run on the virtual machines and perform transactions on the data files. These transactions may update data and those are captured on the appliance. The appliance has data in data files for multiple points in time. A storage stack in such an appliance is generally more optimized for backup and restore, which involves large sequential writes, large sequential reads, and a large amount of capacity. This is not efficient for small, random reads and random writes that applications typically do while performing transactions. It is within this context that the embodiments arise.